Generally described, database hosting services provide the ability for multiple users to create sites with one or more lists, or tables, and store data for those lists in a database maintained by the database hosting service. Such services typically provide the ability for each user of a site to create multiple lists for each site. The database hosting service presents those lists as independent units to the site. However, internally, most database hosting services maintain larger sets of tables with a collective of the information from all of the different tables of the different sites. The reason for this is that for a large number of users working with the database hosting service, the number of tables being created is very large. Beyond a certain threshold, a large number of tables causes scalability and bottlenecks within the database hosting service.
A database hosting service typically is able to scale better with a smaller number of tables that could individually have a very large number of rows. For example, a database hosting service might scale better with hundreds or thousands of tables with billions of rows in each table than with millions of tables, even if those tables had very few rows in each. Accordingly, most database hosting services generate a small set of extremely large tables with a large number of columns and rows for various data types and maintain information from different user sites in the small subset of extremely large tables. While such a model provides good scalability in terms of numbers of lists that can be stored in the database, it suffers from the problems of not being able to maintain relationships between tables of a site or perform integrity checks between tables of a particular site.